﻿using Civilisation_code.PCarte;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WPF_Civilisation
{
    /// <summary>
    /// Logique d'interaction pour Windo_Aide.xaml
    /// </summary>
    public partial class Window_Aide : Window
    {

        /// <summary>
        /// Référence de la fenêtre qui a créée celle-ci
        /// </summary>
        private Window_Carte _w;

        /// <summary>
        /// Constructeur de la fenêtre
        /// </summary>
        /// <param name="w">Fenêtre qui a créée celle-ci</param>
        /// <param name="l">Liste des meilleures cases pour fonder une ville</param>
        public Window_Aide(Window_Carte w,List<Case> l)
        {
            //Initialisation des composants
            InitializeComponent();
            _w = w;

            //Construction de la fenêtre
            construction(l);
        }

        /// <summary>
        /// Construction des éléments de la fenêtre
        /// </summary>
        /// <param name="l">Liste des meilleures cases pour fonder une ville</param>
        private void construction(List<Case> l)
        {
            int i = 1;

            //Pour chaque case de la liste, on affiche ses informations
            foreach(Case c in l){
                grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(25, GridUnitType.Pixel) });

                Label la = new Label();
                la.Content = i+".";
                Grid.SetColumn(la,0);
                Grid.SetRow(la,i);

                Button b = new Button();
                b.Content = c._x+" : "+c._y;
                b.Tag = c;
                b.Click += new RoutedEventHandler(clique_case);
                Grid.SetColumn(b, 1);
                Grid.SetRow(b, i);


                Label la3 = new Label();
                la3.Content = c._ressource.minerais;
                Grid.SetColumn(la3, 2);
                Grid.SetRow(la3, i);

                Label la4 = new Label();
                la4.Content = c._ressource.nourriture;
                Grid.SetColumn(la4, 3);
                Grid.SetRow(la4, i);

                Label la5 = new Label();
                la5.Content = c._valeur;
                Grid.SetColumn(la5, 4);
                Grid.SetRow(la5, i);

                grid.Children.Add(la);
                grid.Children.Add(b);
                grid.Children.Add(la3);
                grid.Children.Add(la4);
                grid.Children.Add(la5);
                i++;
            }

            

        }

        /// <summary>
        /// Méthode appellée lorsque l'utilisateur a cliquée sur le bouton d'une case
        /// Sélectionne la case dans la fenêtre de jeu
        /// </summary>
        /// <param name="sender">Bouton</param>
        /// <param name="e">Evènement</param>
        private void clique_case(object sender, RoutedEventArgs e)
        {
            Button b = sender as Button;

            Case c = (Case)b.Tag;

            Tuple<Rectangle, Label> t = (Tuple<Rectangle, Label>)_w._cases[c];

            //Simule un clique sur cette case dans la fenêtre principale
            _w.clique_sur_une_case(t.Item1, null);

        }
    }
}
